package cn.com.dycc.sys_manage.dictionarysysmanagement.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import cn.com.dycc.sys_manage.dictionarysysmanagement.entity.Dictionary;
import cn.com.dycc.sys_manage.dictionarysysmanagement.entity.DictionaryResult;



/**
 * 
 * Description: 字典表dao层
 * Author: Liket
 * Version: 1.0
 * Create Date Time: 2017年8月16日 下午3:49:16.
 * Update Date Time: 
 * @see
 */

public interface DictionaryDao {
	
	/**
	 * 查询字典表所有信息 ;模糊查询
	 * @param tkey 名称
	 * @param tval 值
	 * @param ttab_name 表名
	 * @param tcolumn_name 字段名
	 * @return 字典表集合
	 */
	List<DictionaryResult> findAllDict(
			@Param("org_id") String org_id,
			@Param("key") String key,
			@Param("val") String val,
			@Param("tab_name") String tab_name,
			@Param("column_name") String column_name,
			@Param("start") Integer start,
			@Param("limit") Integer limit
			);
	/**
	 * 批量删除字字典表
	 * @param ids 字典表数组id
	 * @return 成功>=1 0失败
	 */
	int deleteDictionary(
			@Param("org_id")String org_id,
			@Param("list")List<String> list
			);
	/**
	 * 通过id查询字典表信息
	 * @param id 字典表id
	 * @return 字典表实体信息
	 */
	Dictionary findDictionary(
			@Param("id")String id,
			@Param("org_id")String org_id);
	
	/**
	 * 增加字典表数据
	 * @param dict 字典表实体
	 * @return 成功 1，0 失败
	 */
	int addDictionary(Dictionary dict);
	/**
	 * 更新字典表
	 * @param dict 字典表实体类
	 * @return 1 更新成功 0 更新失败
	 */
	int updateDictionary(Dictionary dict);
	
	/**
	 * 查询字典表数据key
	 * @param tab_name 表名
	 * @param column_name 字段名
	 * @param key key值
	 * @return
	 */
	public Dictionary findVal(
			@Param("tab_name") String tab_name,
			@Param("column_name") String column_name,
			@Param("key") String key,
			@Param("org_id") String org_id
			);
	
	/**
	 * 查询字典表数据是否已存在
	 * @param org_id
	 * @param tab_name
	 * @param column_name
	 * @param key
	 * @param val
	 * @return
	 */
	public int findcount(
			@Param("org_id") String org_id,
			@Param("tab_name") String tab_name,
			@Param("column_name") String column_name,
			@Param("key") String key,
			@Param("val") String val
			);
	
	String countDict(
			@Param("org_id") String org_id,
			@Param("key") String key,
			@Param("val") String val,
			@Param("tab_name") String tab_name,
			@Param("column_name") String column_name
			);
	
	
	/**
	 * 用于查询精确查询字典表集合
	 * @param tkey 名称
	 * @param tval 值
	 * @param ttab_name 表名
	 * @param tcolumn_name 字段名
	 * @return 字典表集合
	 */
	List<DictionaryResult> dicList(
			@Param("org_id") String org_id,
			@Param("key") String key,
			@Param("val") String val,
			@Param("tab_name") String tab_name,
			@Param("column_name") String column_name,
			@Param("start") Integer start,
			@Param("limit") Integer limit
			);
	
	/**
	 * 查询字典表数据keyandval
	 * @param org_id
	 * @param tab_name
	 * @param column_name
	 * @return
	 */
	public List<Map<String,Object>> findKeyAndVal(			
			@Param("org_id") String org_id,
			@Param("tab_name") String tab_name,
			@Param("column_name") String column_name);
	
}
